import type {RouteRecordRaw} from 'vue-router';
/**
 * 路由meta对象参数说明
 * meta: {
 *      title:          菜单栏及 tagsView 栏、菜单搜索名称（国际化）
 *      hidden：        是否隐藏此路由
 *      icon：          菜单、tagsView 图标，阿里：加 `iconfont xxx`，fontawesome：加 `fa xxx`
 * }
 */

// 静态路由（默认路由）
export const staticRoutes: Array<RouteRecordRaw> = [
    {
        path: '/login',
        name: 'Login',
        component: () => import('@/views/login/index.vue'),
        meta: {
            static: true,
            hidden: true
        }
    },

    {
        path: '/404',
        name: '404',
        component: () => import('@/views/error/404.vue'),
        meta: {
            static: true,
            hidden: true
        }
    },

    {
        path: '/',
        name: 'Home',
        component: () => import('@/layout/index.vue'),
        redirect: '/home',
        meta: {
            static: true,
        },
        children: [
            {
                path: 'home',
                name: 'Home',
                component: () => import('@/views/home/index.vue'),
                meta: {
                    static: true,
                    title: '首页',
                    icon: 'ele-HomeFilled',
                }
            },
            {
                path: 'home/deviceDetails',
                name: 'DeviceDetails',
                component: () => import('@/views/home/DeviceDetails/index.vue'),
                meta: {
                    static: true,
                    title: '设备管理',
                    hidden:true  
                },
            },
            {
                path: 'home/deviceDetails/sensorDetails',
                name: 'SensorDetails',
                component: () => import('@/views/home/DeviceDetails/SensorDetails/index.vue'),
                meta: {
                    static: true,
                    title: '传感器详情',
                    hidden:true,
                }
            }
        ]
    }
];


// 定义动态路由
export const allAsyncRoutes: Array<RouteRecordRaw> = [
    // 后台权限管理的路由配置
    {
        path: "/acl",
        name: "Acl",
        component: () => import("@/layout/index.vue"),
        redirect: "/acl/user/list",
        // 父级的meta是否有效取决于子菜单是否存在且存在的个数：当子菜单只有一个的时候，那么父级将不会显示，默认显示是唯一的一个子菜单
        // 如果有多个 children ，那么父级将会显示，且点击父级会显示和隐藏所有子菜单项
        meta: {
            title: "权限管理",
            icon: "ele-Setting",
        },
        children: [
            {
                name: "User",
                path: "/acl/user/list",
                component: () => import("@/views/acl/user/index.vue"),
                meta: {
                    title: "用户管理",
                },
            },
            {
                name: "Role",
                path: "/acl/role/list",
                component: () => import("@/views/acl/role/index.vue"),
                meta: {
                    title: "角色管理",
                },
            },
            {
                name: "RoleAuth",
                path: "/acl/role/auth",
                component: () => import("@/views/acl/role/roleAuth.vue"),
                meta: {
                    title: "角色管理",
                    // 这个路由是通过角色列表中每一个角色后的按钮点击进入的，不需要在左侧的菜单中显示，所以我们设置 hidden 为 true，隐藏该路由
                    hidden: true,
                    activeMenu: "/acl/role/list",
                },
            },
            {
                name: "Permission",
                path: "/acl/permission/list",
                component: () => import("@/views/acl/permission/index.vue"),
                meta: {
                    title: "菜单管理",
                },
            },
        ],
    },
];

/*
 匹配任意的路由 必须最后注册，所以也是单独存放，在处理完动态路由以后再添加到最终的路由表中
 不在使用 * 作为通配符，而是正则（动态路由）
     . 表示任意字符
     * *号前面的规则匹配0次或N次
*/
export const anyRoutes: RouteRecordRaw = {
    // /detail/:id(\\d+)
    path: '/:pathMatch(.*)',
    name: 'Any',
    redirect: '/404',
    meta: {
        hidden: true
    }
}
